home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 23
/
Amiga Format AFCD23 (Feb 1998, Issue 107).iso
/
-seriously_amiga-
/
shareware
/
programming
/
amos
/
kryjeldemo
/
kryjel2.amos
/
kryjel2.amosSourceCode
Wrap
AMOS Source Code
|
1997-12-01
|
23KB
|
751 lines
'***************************
'* AMOS Professional� *
'* *
'* KRYJEL *
'* *
'* �1996,1997 Mike Baron *
'* *
'*World of Kryjel Generator*
'*for Characters... *
'***************************
'HISTORY!
' August 15th, 1996 Project Birth (Alpha)
' 27th Added screen pause sub
' 30th Finished intro.,
' Began Using Amos Interface, started Buttons
' September 8th FINISHED BUTTONS QUIT and MAP ROUTINES Do NE
' 16th Finished roller routine
' Cleaned up texts, started Character Sheet.
' 20th Started work on Char.Sheet using zones only!
' 21st Char Screen fleshed out, added SUPERHERO gens
' 22nd Optimized ROLL into 1 procedure-> 10% less code!
' Started alg.'s for char sheet
' 23rd Finished basic structure...it is huge
' 26th Finished char gen sheet FRONT,needs more structure
'
'-------------------------------------------
'GENERAL
'
'Files Necessary to run:
' Menu.pic FinalRole.pic
' Chargen.pic Worldintro.anim
' Roll.pic Worldmap.pic
'-------------------------------------------
' SET UP PROGRAM
'Set memory, and reserve variables.
'Initialize variables.
'-------------------------------------------
Set Buffer 50
Set Stack 250
Global BDY,MND,SPT,AGL,HITS,HITSB,MANA,MANAB,PSI,PSIB,PP,CHP,CMP,CPP,MVMT,BUILDPOINTS
Global DAM,MCAR,HEAL,SKB,PSIB,DEF,INIT,THT,MOV,SPS,SPD
Global RACE$,CLASS$,PNAME$,CNAME$
PP=0
CLASS$="None"
PNAME$="None"
CNAME$="None"
RACE$="None"
'-------------------------------------------
' SCREEN OPENING
'-------------------------------------------
Auto View Off
Screen Open 0,640,200,8,Hires : Flash Off : Hide
Curs Off : Cls 0 : Paper 5 : Pen 4
Palette $0,$FEE,$F,$8F,$B00,$41,$95,$FCA
Screen Open 1,640,200,8,Hires : Flash Off : Hide
Curs Off : Cls 0 : Paper 5 : Pen 4
'-------------------------------------------
' INTRO WITH PAUSE CALL
'-------------------------------------------
Load Iff "finalrole.pic",1
Wait Vbl
Appear 1 To 0,19
PAUSE
MENU:
'-------------------------------------------
' OPEN MENU SCREEN
'-------------------------------------------
Load Iff "menu.pic",1
Screen 0
Get Palette 1 : Set Text 6
TPAGE
'
'Screen is now opened!
'Time to show the buttons!
'
MENU2:
Wait Vbl
Screen 0
Show On
A$=A$+"BA 120,0:"
A$=A$+"BUtton 1,50,40,158,12,0,0,1;[IN 7,0,0;GB BP,BP,BP158+,BP12+;IN 0,0,0;GS BP,BP,BP158+,BP12+;PR BP8+,BP3+,'Generate Character',0;][BR 0;]"
A$=A$+"BUtton 2,60,60,136,12,0,0,1;[IN 2,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Load Character',0;][BR 0;]"
A$=A$+"BUtton 3,60,80,136,12,0,0,1;[IN 2,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Save Character',0;][BR 0;]"
A$=A$+"BUtton 4,60,100,136,12,0,0,1;[IN 2,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Print Character',0;][BR 0;]"
A$=A$+"BUtton 5,275,40,145,12,0,0,1;[IN 7,0,0;GB BP,BP,BP145+,BP12+;IN 0,0,0;GS BP,BP,BP145+,BP12+;PR BP8+,BP3+,'World of Kryjel',0;][BR 0;]"
A$=A$+"BUtton 6,280,60,136,12,0,0,1;[IN 7,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Edit Character',0;][BR 0;]"
A$=A$+"BUtton 7,280,80,136,12,0,0,1;[IN 7,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'System Info',0;][BR 0;]"
A$=A$+"BUtton 8,280,100,136,12,0,0,1;[IN 7,0,0;GB BP,BP,BP136+,BP12+;IN 0,0,0;GS BP,BP,BP136+,BP12+;PR BP8+,BP3+,'Quit',0;][BR 0;]"
A$=A$+"EX;"
Dialog Open 1,A$ :
R=Dialog Run(1)
Do
P=Dialog(1)
Exit If P<0
If P=8 Then Goto FINISH
If P=5 Then Goto WORLD
If P=1 Then Goto GENCHAR
If P=2 Then Dialog Close 1 : Goto LCHAR
If P=3 Then Dialog Close 1 : Goto SCHAR
If P=4 Then Dialog Close 1 : Goto PCHAR
If P=6 Then Dialog Close 1 : Goto SHEET1
If P=7 Then Dialog Close 1 : Goto SYSINFO
Wait Vbl
Loop
LCHAR:
'-------------------------------------------
' LOAD CHAR
'-------------------------------------------
Load Iff "Roll.pic",1
Hide
TPAGE
Screen 0
Locate 0,12
Pen 1
Centre "This Option NOT Supported in this release..."
PAUSE
Goto MENU
SCHAR:
'-------------------------------------------
' SAVE CHAR
'-------------------------------------------
Load Iff "Roll.pic",1
Hide
TPAGE
Screen 0
Locate 0,12
Pen 1
Centre "This Option NOT Supported in this release..."
PAUSE
Goto MENU
PCHAR:
'-------------------------------------------
' PRINT CHAR
'-------------------------------------------
Load Iff "CharGen.pic",1
Hide
TPAGE
Screen 0
Locate 0,12
Pen 1
Centre "This Option NOT Supported in this release..."
PAUSE
Goto MENU
SYSINFO:
'-------------------------------------------
' MY RPG!!
'-------------------------------------------
Screen Open 2,640,400,4096,Laced+Lowres : Flash Off : Hide
Curs Off : Cls 0 : Paper 0 : Pen 4
Load Iff "Sorcerer.pic",2
View
'\\\\\\\\\\\\\\\\INSERT TEXT STUFF HERE!!!!!///////////////////////
Set Text 6
Wait 100
For S=1 To 10
For N=1 To 11
Locate 0,8 : Centre Border$("FINAL ROLE",N)
Locate 0,10 : Centre Border$("R.P.G.",N)
Wait Vbl : Pen 5 : Paper 11
Next N
Next S
Wait 60
Locate 0,13 : Centre Border$(" Copyright � Mike Baron 1996 ",5)
Wait 60
Pen 3
Locate 0,17 : Print " "
Locate 0,18 : Print " This demo was written as an aid for my "
Locate 0,19 : Print "Role Playing Game (RPG). The following "
Locate 0,20 : Print "are features of my unique RPG which I "
Locate 0,21 : Print "have spent years developing... "
Locate 0,22 : Print " "
Wait 200 : Pen 5
Locate 0,23 : Print " * Skill Based Character System "
Wait 30 : Pen 5
Locate 0,24 : Print " * Interactive Playing & Moderation "
Wait 30 : Pen 5
Locate 0,25 : Print " * Luck Pool "
Wait 30 : Pen 5
Locate 0,26 : Print " * Normal To Super-Heroic Characters "
Wait 30 : Pen 5
Locate 0,27 : Print " * Software Character Generation "
Wait 30 : Pen 5
Locate 0,28 : Print " * Unique World Of KRYJEL "
Wait 30 : Pen 5
Locate 0,29 : Print " * User Support Via E-Mail "
Wait 30 : Pen 5
Locate 0,30 : Print " * 'Universal Compatability' ;-) "
Wait 360 : Pen 10
Locate 0,36 : Centre " "
Locate 0,38 : Centre " "
Locate 0,37 : Centre Border$(" E-Mail arcanum@users.dzn.com ",5)
Wait 300
Screen Close 2
Screen Close 1
Screen Open 1,640,200,8,Hires : Flash Off : Hide
Curs Off : Cls 0 : Paper 5 : Pen 4
Goto MENU2
GENCHAR:
'-------------------------------------------
' GENCHAR!
'-------------------------------------------
CLRSTATS
Dialog Close 1
Load Iff "CharGen.pic",1
Screen 0
TPAGE
Locate 0,1
Pen 2 : Paper 0
Centre "CHOOSE YOUR FATE"
Paper 1
Locate 11,14
Print "9D10 (9-90 Build Points)"
Locate 45,14
Print "5D10+25 (30-75 Build Points)"
Locate 27,20
Print "50 Build Points (No Roll!)"
Locate 27,5
Print "11D10+140 (151-250 Build Points)"
Rem ***************MAIN GENERATOR!!!!******************
B$=B$+"BA 130,0:"
B$=B$+"BUtton 1,0,95,110,12,0,0,1;[IN 1,0,0;GB BP,BP,BP110+,BP12+;IN 0,0,0;GS BP,BP,BP110+,BP12+;PR BP8+,BP3+,'RISKY METHOD',0;][BR 0;]"
B$=B$+"BUtton 2,280,95,132,12,0,0,1;[IN 1,0,0;GB BP,BP,BP132+,BP12+;IN 0,0,0;GS BP,BP,BP132+,BP12+;PR BP8+,BP3+,'STANDARD METHOD',0;][BR 0;]"
B$=B$+"BUtton 3,142,140,102,12,0,0,1;[IN 1,0,0;GB BP,BP,BP102+,BP12+;IN 0,0,0;GS BP,BP,BP102+,BP12+;PR BP8+,BP3+,'SAFE METHOD',0;][BR 0;]"
B$=B$+"BUtton 4,142,25,110,12,0,0,1;[IN 1,0,0;GB BP,BP,BP110+,BP12+;IN 0,0,0;GS BP,BP,BP110+,BP12+;PR BP8+,BP3+,'SUPER METHOD',0;][BR 0;]"
B$=B$+"EX;"
Dialog Open 2,B$ :
R=Dialog Run(2)
Do
P=Dialog(2)
Exit If P<0
If P=1 : BUILDPOINTS=0 : ROLLNUM=9 : GEN[BUILDPOINTS,ROLLNUM] : PAUSE : Dialog Close 2 : Goto SHEET1
Else If P=2 : BUILDPOINTS=25 : ROLLNUM=5 : GEN[BUILDPOINTS,ROLLNUM] : PAUSE : Dialog Close 2 : Goto SHEET1
Else If P=3 : BUILDPOINTS=50 : Dialog Close 2 : Goto SHEET1
Else If P=4 : BUILDPOINTS=140 : ROLLNUM=11 : GEN[BUILDPOINTS,ROLLNUM] : PAUSE : Dialog Close 2 : Goto SHEET1
Else
Rem Do Nothing!
Wait Vbl
End If
Loop
Goto MENU
Procedure GEN[BUILDPOINTS,ROLLNUM]
'-------------------------------------------
' ROLLER!
'-------------------------------------------
Dialog Clr 2
Load Iff "Roll.pic",1
Wait Vbl
Appear 1 To 0,19
Screen 0
Hide
Locate 0,11
Pen 1 : Writing 1,2
Print "Rolling Dice Now"
Flash 1,"(222,5)(0F0,5)(F00,5)(00F,5)"
For ROLL=1 To ROLLNUM : Rem RD10 roll!
T=Rnd(40) : Rem Random timer
For X=1 To T
BUILDTEMP=(Rnd(9)+1) : Rem 10-sider
Wait Vbl
Next X
BUILDPOINTS=BUILDPOINTS+BUILDTEMP
Locate 14+ROLL,11+ROLL
Print BUILDTEMP
Next ROLL
Flash Off
Locate 53,11
Pen 3
Print "TOTAL BUILDPOINTS=";BUILDPOINTS
Paper 5
End Proc
Procedure CLRSTATS
BDY=0 : MND=0 : SPT=0 : AGL=0 : HITS=0 : HITSB=0 : MANA=0 : MANAB=0
PSI=0 : PSIB=0 : PP=0 : CHP=0 : CMP=0 : CPP=0 : MVMT=0 : BUILDPOINTS=0
DAM=0 : MCAR=0 : HEAL=0 : SKB=0 : PSIB=0 : DEF=0 : INIT=0 : THT=0
MOV=0 : SPS=0 : SPD=0
PP=0
CLASS$="None"
PNAME$="None"
CNAME$="None"
RACE$="None"
End Proc
SHEET1:
'-------------------------------------------
' GENCHAR!...uhhh sheet 1!
'-------------------------------------------
Load Iff "frontsheet.pic",1
Wait Vbl
Appear 1 To 0,19
Screen 0
Show On
Pen 1 : Paper 7
Locate 0,23
Centre "{LEFT AND RIGHT MOUSE BUTTONS TO CHANGE STATS! (-/+)}"
Rem ***************FRONT OF CHARACTER SHEET*****************
Locate 73,13 : Paper 5 : Pen 6 : Print " P2 "
Locate 73,14 : Print " -> "
Locate 3,13 : Print "MENU"
Locate 3,14 : Print " <- "
Rem ***ZONE DATA***
Reserve Zone 17
XG=10 : YG=1 : XG2=35 : YG2=2 : Gosub TGRFX : Set Zone 1,GX,GY To GX2,GY2
XG=10 : YG=2 : XG2=35 : YG2=3 : Gosub TGRFX : Set Zone 2,GX,GY To GX2,GY2
XG=10 : YG=4 : XG2=20 : YG2=5 : Gosub TGRFX : Set Zone 3,GX,GY To GX2,GY2
XG=35 : YG=4 : XG2=45 : YG2=5 : Gosub TGRFX : Set Zone 4,GX,GY To GX2,GY2
XG=19 : YG=6 : XG2=30 : YG2=7 : Gosub TGRFX : Set Zone 5,GX,GY To GX2,GY2
XG=19 : YG=7 : XG2=26 : YG2=8 : Gosub TGRFX : Set Zone 6,GX,GY To GX2,GY2
XG=15 : YG=8 : XG2=26 : YG2=9 : Gosub TGRFX : Set Zone 7,GX,GY To GX2,GY2
XG=16 : YG=9 : XG2=26 : YG2=10 : Gosub TGRFX : Set Zone 8,GX,GY To GX2,GY2
XG=10 : YG=11 : XG2=26 : YG2=12 : Gosub TGRFX : Set Zone 9,GX,GY To GX2,GY2
XG=26 : YG=11 : XG2=43 : YG2=12 : Gosub TGRFX : Set Zone 10,GX,GY To GX2,GY2
XG=43 : YG=11 : XG2=62 : YG2=12 : Gosub TGRFX : Set Zone 11,GX,GY To GX2,GY2
XG=10 : YG=15 : XG2=32 : YG2=16 : Gosub TGRFX : Set Zone 12,GX,GY To GX2,GY2
XG=10 : YG=16 : XG2=25 : YG2=17 : Gosub TGRFX : Set Zone 13,GX,GY To GX2,GY2
XG=10 : YG=17 : XG2=25 : YG2=18 : Gosub TGRFX : Set Zone 14,GX,GY To GX2,GY2
XG=35 : YG=18 : XG2=45 : YG2=19 : Gosub TGRFX : Set Zone 15,GX,GY To GX2,GY2
XG=73 : YG=13 : XG2=77 : YG2=15 : Gosub TGRFX : Set Zone 16,GX,GY To GX2,GY2
XG=3 : YG=13 : XG2=7 : YG2=15 : Gosub TGRFX : Set Zone 17,GX,GY To GX2,GY2
M=0
DISPLAY
Locate 0,21 : Centre "Mouse Button = " : Locate 0,22 : Centre "Zone ="
Do
M=Mouse Click
MZ=Mouse Zone
If M<>0 and MZ=17 Then Goto MENU
If M<>0 and MZ=16 Then Goto SHEET2
Locate 45,22
If MZ<10 Then Print "0";MZ Else Print MZ
If M<>0 Then POLLSTATS[MZ,M]
Loop
Procedure DISPLAY
Curs Off
Paper 7 : Pen 5
Locate 10,1 : Print "Player Name: ";PNAME$
Locate 10,2 : Print "Character Name: ";CNAME$
Locate 10,4 : Print "MAIN STATS"
Locate 0,4 : Centre "MODIFIERS"
If BDY>9 :
Locate 15,6 : Print " BODY:";BDY;" Damage: ";DAM
Else If BDY<=9 :
Locate 15,6 : Print " BODY:";BDY;" Damage: ";DAM
Else : End If
If MCAR<10
Locate 38,6 : Print " MaxCarry: ";MCAR;" #'s "
Else If MCAR<100
Locate 38,6 : Print " MaxCarry: ";MCAR;" #'s "
Else
Locate 38,6 : Print " MaxCarry: ";MCAR;"#'s "
End If
If HEAL<=0
Locate 57,6 : Print " Heal:";HEAL;" /week"
Else If HEAL<100
Locate 57,6 : Print " Heal:";HEAL;" /day "
Else
Locate 57,6 : Print " Heal:";HEAL;"/day "
End If
If MND>9 :
Locate 15,7 : Print " MIND:";MND;" Skill Checks: ";SKB;" PSI Defense: ";PSIB;"D10"
Else If MND<=9 :
Locate 15,7 : Print " MIND:";MND;" Skill Checks: ";SKB;" PSI Defense: ";PSIB;"D10"
Else : End If
If AGL>9 :
Locate 15,8 : Print "AGILITY:";AGL;" Def: ";DEF;" Init: ";INIT;" Hit: ";THT
Else If AGL<=9 :
Locate 15,8 : Print "AGILITY:";AGL;" Def: ";DEF;" Init: ";INIT;" Hit: ";THT
Else : End If
If MOV<10 :
Locate 54,8 : Print "Move:+";MOV;" in/turn"
Else
Locate 54,8 : Print "Move:+";MOV;"in/turn"
End If
If SPT>9 :
Locate 15,9 : Print " SPIRIT:";SPT;" Spell Bonus: ";SPS;"D10 Spell Def: ";SPD;"D10"
Else If SPT<=9 :
Locate 15,9 : Print " SPIRIT:";SPT;" Spell Bonus: ";SPS;"D10 Spell Def: ";SPD;"D10"
Else : End If
If HITSB>99
Locate 10,11 : Print "Hit Points:";HITSB;
Else If HITSB>9
Locate 10,11 : Print "Hit Points: ";HITSB;
Else
Locate 10,11 : Print "Hit Points: ";HITSB;
End If
If MANAB>99
Locate 27,11 : Print "Mana Points:";MANAB;
Else If MANAB>9
Locate 27,11 : Print "Mana Points: ";MANAB;
Else
Locate 27,11 : Print "Mana Points: ";MANAB;
End If
If PSIB>99
Locate 44,11 : Print "PSI Potential:";PSIB
Else If PSIB>9
Locate 44,11 : Print "PSI Potential: ";PSIB
Else
Locate 44,11 : Print "PSI Potential: ";PSIB
End If
If BUILDPOINTS>99 :
Locate 25,13 : Print "Luck:";BUILDPOINTS
Else If BUILDPOINTS>9 :
Locate 25,13 : Print "Luck:";BUILDPOINTS;" "
Else :
Locate 25,13 : Print "Luck:";BUILDPOINTS;" "
End If
If BUILDPOINTS<>0 :
LPOOL=(Abs(BUILDPOINTS/5))+1
End If
If BUILDPOINTS>44 :
Locate 35,13 : Print "Luck Pool:";LPOOL;"D10 GOOD Luck "
Else If BUILDPOINTS<-44 :
Locate 35,13 : Print "Luck Pool:";LPOOL;"D10 BAD Luck "
Else If BUILDPOINTS>-44 and BUILDPOINTS<0 :
Locate 35,13 : Print "Luck Pool: ";LPOOL;"D10 BAD Luck "
Else If BUILDPOINTS<44 and BUILDPOINTS>0 :
Locate 35,13 : Print "Luck Pool: ";LPOOL;"D10 GOOD Luck "
End If
If MVMT>9 :
Locate 10,15 : Print "Movement Rate:";MVMT+((BDY+AGL)/2)+MOV;" inches/turn"
Else If MVMT<=9 :
Locate 10,15 : Print "Movement Rate:";MVMT+((BDY+AGL)/2)+MOV;" inches/turn"
Else : End If
Locate 10,16 : Print "Race:";RACE$;" Racial Bonuses:"
Locate 10,17 : Print "Class:";CLASS$;" Class Bonuses:"
Locate 0,18 : Centre "SKILLS"
End Proc
Procedure POLLSTATS[MZ,M]
'-------------------------------------------
' POLL ALL STATS!
'-------------------------------------------
Locate 45,21
If M=1 Then Print " Left"
If M=2 Then Print "Right"
If MZ=1
Locate 22,1
Clear Key
PNAME$=Input$(25)
Else If MZ=2
Locate 25,2
CNAME$=Input$(25)
Else If MZ=3
Locate 0,23 : Centre "IMPROVE YOUR MAIN STATS PLEASE!"
Wait 150
Pen 1 : Paper 7
Locate 0,23
Centre "{LEFT AND RIGHT MOUSE BUTTONS TO CHANGE STATS! (-/+)}"
Else If MZ=4
Locate 0,23 : Centre "THESE CHANGE AS MAIN STATS ARE CHANGED!"
Wait 150
Pen 1 : Paper 7
Locate 0,23
Centre "{LEFT AND RIGHT MOUSE BUTTONS TO CHANGE STATS! (-/+)}"
Else If MZ=5
If M=1 and BDY<>0 : SUBT[BDY]
BDY=Param
Else If M=2 : AD[BDY]
BDY=Param
Else : End If
Else If MZ=6
If M=1 and MND<>0 : SUBT[MND]
MND=Param
Else If M=2 : AD[MND]
MND=Param
Else : End If
Else If MZ=7
If M=1 and AGL<>0 : SUBT[AGL]
AGL=Param
Else If M=2 : AD[AGL]
AGL=Param
Else : End If
Else If MZ=8
If M=1 and SPT<>0 : SUBT[SPT]
SPT=Param
Else If M=2 : AD[SPT]
SPT=Param
Else : End If
Else If MZ=9
If M=1 and HITS=0 : Pop Proc
Else If M=1 : Dec HITS : BUILDPOINTS=BUILDPOINTS+2
Else If M=2 and BUILDPOINTS<2 : Pop Proc
Else : Inc HITS : BUILDPOINTS=BUILDPOINTS-2
End If
Else If MZ=10
If M=1 and MANA=0 : Pop Proc
Else If M=1 : Dec MANA : BUILDPOINTS=BUILDPOINTS+3
Else If M=2 and BUILDPOINTS<3 : Pop Proc
Else : Inc MANA : BUILDPOINTS=BUILDPOINTS-3
End If
Else If MZ=11
If M=1 and PSI=0 : Pop Proc
Else If PP=0 : Pop Proc
Else If M=1 : Dec PSI : BUILDPOINTS=BUILDPOINTS+3
Else If M=2 and BUILDPOINTS<3 : Pop Proc
Else : Inc PSI : BUILDPOINTS=BUILDPOINTS-3
End If
Else If MZ=12
If M=1 and MVMT=0 : Pop Proc
Else If M=1 : Dec MVMT : BUILDPOINTS=BUILDPOINTS+2
Else If M=2 and BUILDPOINTS<2 : Pop Proc
Else : Inc MVMT : BUILDPOINTS=BUILDPOINTS-2
End If
Else If MZ=13
Locate 15,16
If RACE$="none" : Print "New Race!"
Else If RACE$="New Class!" : Print "Old Race!"
Else If RACE$="Old Race!" : Print "New Race!"
Else : End If
Else If MZ=14
Locate 16,17
If CLASS$="none" : Print "New Class!"
Else If CLASS$="New Class!" : Print "Old Class!"
Else If CLASS$="Old Class!" : Print "New Class!"
Else : End If
Else If MZ=15
End If
Rem *Calculate modified stats*
Rem BODY
If(BDY>4 and BDY<10) or BDY=0 Then DAM=0
If BDY<5 and BDY>0 Then DAM=-(5-BDY)
If BDY=10 Then DAM=1
If BDY=15 Then DAM=2
If BDY=18 Then DAM=3
If BDY>19 Then DAM=4+(BDY-20)
MCAR=BDY*20 : HEAL=DAM
Rem MIND
If(MND>4 and MND<10) or MND=0 Then SKB=0
If MND<5 and MND>0 Then SKB=-(5-MND)
If MND=10 Then SKB=1
If MND=15 Then SKB=2
If MND=18 Then SKB=3
If MND>19 Then SKB=4+(MND-20)
If PSI<>0 Then PSIB=SKB
Rem AGILITY
If(AGL>4 and AGL<10) or AGL=0 Then DEF=0
If AGL<5 and AGL>0 Then DEF=-(5-AGL)
If AGL=10 Then DEF=1
If AGL=15 Then DEF=2
If AGL=18 Then DEF=3
If AGL>19 Then DEF=4+(AGL-20)
INIT=DEF
THT=INIT
MOV=Max(INIT,0)
Rem Spirit
If(SPT>4 and SPT<10) or SPT=0 Then SPD=0
If SPT<5 and SPT>0 Then SPD=-(5-SPT)
If SPT=10 Then SPD=1
If SPT=15 Then SPD=2
If SPT=18 Then SPD=3
If SPT>19 Then SPD=4+(SPT-20)
If SPT>9 Then SPS=SPD
If SPT<10 Then SPS=0
Rem Secondary Stats
HITSB=HITS+(BDY+MND+SPT+AGL)
MANAB=MANA+((MND+SPT)/2)
PSIB=PSI+(PSI*(MND))
DISPLAY
End Proc
Procedure SUBT[STAT]
If STAT=<5 : CST=1
Else If STAT=<10 : CST=2
Else If STAT=<15 : CST=3
Else If STAT=<20 : CST=4
Else CST=5 : End If
Dec STAT : BUILDPOINTS=BUILDPOINTS+CST
End Proc[STAT]
Procedure AD[STAT]
If STAT<5 : CST=1
Else If STAT<10 : CST=2
Else If STAT<15 : CST=3
Else If STAT<20 : CST=4
Else CST=5 : End If
' Negative B.P. not allowed if following line is INCLUDED!
' If BUILDPOINTS<CST Then Pop Proc
Inc STAT : BUILDPOINTS=BUILDPOINTS-CST
End Proc[STAT]
SHEET2:
'-------------------------------------------
' GENCHAR!...uhh side 2!
'-------------------------------------------
Load Iff "backsheet.pic",1
Wait Vbl
Appear 1 To 0,19
Screen 0
Show On
Paper 5 : Pen 6
Locate 3,13 : Print " P1 "
Locate 3,14 : Print " <- "
Rem ***ZONE DATA***
Reset Zone
Reserve Zone 17
XG=28 : YG=3 : XG2=52 : YG2=4 : Gosub TGRFX : Set Zone 1,GX,GY To GX2,GY2
XG=35 : YG=9 : XG2=45 : YG2=10 : Gosub TGRFX : Set Zone 2,GX,GY To GX2,GY2
XG=30 : YG=17 : XG2=50 : YG2=18 : Gosub TGRFX : Set Zone 3,GX,GY To GX2,GY2
XG=3 : YG=13 : XG2=7 : YG2=15 : Gosub TGRFX : Set Zone 4,GX,GY To GX2,GY2
M=0
DISPLAY2
Locate 0,21 : Centre "Mouse Button = " : Locate 0,22 : Centre "Zone ="
Do
M=Mouse Click
MZ=Mouse Zone
If M<>0 and MZ=4 Then Goto SHEET1
Locate 45,22
If MZ<10 Then Print "0";MZ Else Print MZ
If M<>0 and MZ=1 Then PSIFUN
If M<>0 and MZ=2 Then STORE
If M<>0 and MZ=3 Then INFO
Loop
Procedure PSIFUN
Paper 4 : Pen 7
Locate 0,3 : Centre "Spells/Psionics/Powers"
Wait Vbl
Paper 7 : Pen 5
Locate 0,3 : Centre "Spells/Psionics/Powers"
End Proc
Procedure STORE
Wait Vbl
Paper 7 : Pen 5
Locate 0,9 : Centre "Equipment"
End Proc
Procedure INFO
Wait Vbl
Paper 7 : Pen 5
Locate 0,19 : Centre "(not implemented yet)"
End Proc
Procedure DISPLAY2
Curs Off
Paper 7 : Pen 5
Locate 0,3 : Centre "Spells/Psionics/Powers"
Locate 0,9 : Centre "Equipment"
Locate 10,10 : Print "Name Weight Location"
Locate 42,10 : Print "Name Weight Location"
Locate 0,17 : Centre "Additional Information"
End Proc
TGRFX:
'-------------------------------------------
' Convert Coordinates!
'-------------------------------------------
GX=X Graphic(XG) : GY=Y Graphic(YG) : GX2=X Graphic(XG2) : GY2=Y Graphic(YG2)
Return
WORLD:
'-------------------------------------------
' SHOW MAPS WITH PAUSE
'-------------------------------------------
Dialog Close 1
Hide
Load Iff "Worldmap.pic",1
MAP
PAUSE
Goto MENU
FINISH:
Edit
Procedure MAP
'-------------------------------------------
' Load Map
'Scroll iff from screen 1 across screen 0 !
'This requires an X-axis flipped image
'in screen 2.
'-------------------------------------------
Screen 0
Get Palette 1
For MAP=0 To 590 Step 8
Screen 1
Get Block 1,(590-MAP),0,50,200
Hrev Block 1
Screen 0
Put Block 1,(640-MAP),0
If MAP>64 Then Screen Copy 1,704-MAP,0,712-MAP,200 To 0,704-MAP,0
Next MAP
For MAPEND=104 To 0 Step -8
Screen Copy 1,MAPEND,0,MAPEND+20,200 To 0,MAPEND,0
Wait Vbl
Next MAPEND
Wait 100
Rem ***Load Color Map And Appear!***
Load Iff "world.pic",1
Wait Vbl
Screen 0
Get Palette 1
Appear 1 To 0,19
End Proc
Procedure TPAGE
'-------------------------------------------
' Turn Page!
'Turns Page stored in screen 1 across
'screen 0 from right to left. Hires 640x400
'(NOT INTERLACED!)
'-------------------------------------------
XW=0
Rem Quick Fix for 2.5 pixels missing on right side of screen!
Screen Copy 1,637,0,640,200 To 0,637,0
For MAP=1 To 64 : Rem Sets # of screen copies 1 to X1
XW=XW+5 : Rem xw=xw+X2 where X1*X2=(screen width)/2
Screen Copy 1,0,0,XW,200 To 0,(640-(2*XW)),0 : Rem copy left screen 1
Screen Copy 1,(640-XW),0,(640-(XW/2)),200 To 0,(640-XW),0 : Rem copy right screen 1
Next MAP
Wait Vbl
End Proc
Procedure PAUSE
'--------------------------------------------------------
'This routine will prompt user to click mouse to continue
'and allows immediate exit before prompt! Current Screen
'must be 0!
'--------------------------------------------------------
TC=0
Screen 0
For PAUSE=1 To 350
Wait 1
If Mouse Click<>0 Then Pop Proc
Next PAUSE
While Mouse Click=0
TC=TC+1
If TC=8 Then TC=0
Locate ,24
Pen TC
Centre "Press Mouse Button To Continue..."
Wait 10
Wend
End Proc